From 473709fee31a040b1fdbb36ebbee26f5bffabd68 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 27 Apr 2020 20:58:03 -0400 Subject: [PATCH] popover: Allocate after setting final_position When we find out that we've been flipped, set final_position and final_rect before allocating the popover. This prevents 'smashed-in beak' disease. Fixes: #2671 --- gtk/gtkpopover.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index 89e5912e66..7de2713771 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -379,11 +379,6 @@ update_popover_layout (GtkPopover *popover, did_flip_vertically (gdk_popup_layout_get_surface_anchor (layout), gdk_popup_get_surface_anchor (popup)); - gtk_widget_allocate (GTK_WIDGET (popover), - gdk_surface_get_width (priv->surface), - gdk_surface_get_height (priv->surface), - -1, NULL); - priv->final_rect = final_rect; switch (priv->position) @@ -405,6 +400,11 @@ update_popover_layout (GtkPopover *popover, break; } + gtk_widget_allocate (GTK_WIDGET (popover), + gdk_surface_get_width (priv->surface), + gdk_surface_get_height (priv->surface), + -1, NULL); + g_clear_pointer (&priv->arrow_render_node, gsk_render_node_unref); gtk_widget_queue_draw (GTK_WIDGET (popover)); } -- 2.30.2